package com.fruit.pojo.sms;

import com.fruit.pojo.push.Message;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 消息数据
 *
 * @author joe
 * @version 2018.01.18 17:35
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MsgData {
    /**
     * 消息所属用户ID
     */
    private int userId;
    /**
     * 消息类型
     */
    private String msgType;
    /**
     * 系统消息
     */
    private Message msg;
    
    /**
     * 消息分类
     */
    private String type;

    /**
     * 快速构建消息数据列表（构建出来的MsgData的userId和msgType全部一模一样，只有Message不一样）
     *
     * @param userId  消息列表的用户ID
     * @param msgType 消息类型
     * @param msgs    系统消息列表
     * @return 消息数据列表
     * @throws IllegalArgumentException 参数为空时抛出该异常
     */
    public static List<MsgData> buildList(int userId, String msgType, String type, List<Message> msgs) throws
            IllegalArgumentException {
        if (userId <= 0 || msgType == null || msgs == null || msgs.isEmpty()) {
            throw new IllegalArgumentException("参数不能为空");
        }
        return msgs.stream().map(msg -> {
            return new MsgData(userId, msgType, msg, type);
        }).collect(Collectors.toList());
    }
}
